home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume6 / glib / part04 < prev    next >
Encoding:
Text File  |  1989-05-14  |  50.2 KB  |  1,923 lines

  1. Newsgroups: comp.sources.misc
  2. From: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  3. Subject: v06i105: glib part 4 of 15
  4. Reply-To: lee@uhccux.uhcc.Hawaii.Edu (Greg Lee )
  5.  
  6. Posting-number: Volume 6, Issue 105
  7. Submitted-by: lee@uhccux.uhcc.Hawaii.Edu (Greg Lee )
  8. Archive-name: glib/part04
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then unpack
  12. # it by saving it into a file and typing "sh file".  To overwrite existing
  13. # files, type "sh file -c".  You can also feed this as standard input via
  14. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  15. # will see the following message at the end:
  16. #        "End of archive 4 (of 15)."
  17. # Contents:  d10pat.mnu d10tim.mnu glib.man glibinit.dp5 list.c
  18. # Wrapped by lee@uhccux on Sun May  7 00:40:11 1989
  19. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  20. if test -f 'd10pat.mnu' -a "${1}" != "-c" ; then 
  21.   echo shar: Will not clobber existing file \"'d10pat.mnu'\"
  22. else
  23. echo shar: Extracting \"'d10pat.mnu'\" \(10002 characters\)
  24. sed "s/^X//" >'d10pat.mnu' <<'END_OF_FILE'
  25. X/* $Id: d10pat.mnu,v 1.6 89/05/06 17:13:14 lee Exp $
  26. X * GLIB - a Generic LIBrarian and editor for synths
  27. X *
  28. X * D10 Patch Librarian
  29. X *
  30. X * Code started 19 JAN 89 --  Michael R. Kesti mrk@gvgspd.GVG.TEK.COM
  31. X * modified by Greg Lee
  32. X * $Log:    d10pat.mnu,v $
  33. X * Revision 1.6  89/05/06  17:13:14  lee
  34. X * rel. to comp.sources.misc
  35. X * 
  36. X */
  37. X
  38. X#include "glib.h"
  39. X#include "vis.h"
  40. X
  41. X#define D10PATSIZE 38
  42. X#define PATBASEADDR 0x070000
  43. X#define RESERVESIZE 20
  44. X
  45. Xchar *visnum(), *visonoff();
  46. X
  47. X
  48. X/* This array contains arbitrary screen labels */
  49. Xstruct labelinfo Ldpat[] = {
  50. X#MENU
  51. X
  52. X
  53. X                         Reverb Type     %
  54. X                         Reverb Time     %
  55. X                         Reverb Level    %
  56. X
  57. X                         Patch Level     %
  58. X
  59. X                         Key Mode        %
  60. X                         Split Point     %
  61. X
  62. X
  63. X                                   LOWER           UPPER
  64. X                                   -----           -----
  65. X                Tone Select         %%              %%
  66. X                Key Shift           %               %
  67. X                Fine Tune           %               %
  68. X                Bender Range        %               %
  69. X                Assign Mode         %               %
  70. X                Reverb Switch       %               %
  71. X                Tone Balance        %
  72. X
  73. X
  74. X Press SPACE BAR to sound note %   at volume %   for duration %  on channel % .
  75. X#END
  76. X-1,-1,NULL
  77. X};
  78. X
  79. Xstruct paraminfo  Pdpat[] =  {
  80. X/*
  81. XNAME        TYPE        POS    MAX    OFFSET    MASK    SHIFT    ADHOC
  82. X */
  83. X#O reverbtype    reverbtype    %%    8    16
  84. X#O reverbtime    reverbtime    %%    7    17
  85. X#O reverblevel    reverblevel    %%    7    18
  86. X#O patchlevel    patchlevel    %%    100    20
  87. X#O keymode    keymode        %%    2    0
  88. X#O splitpoint    split        %%    61    1
  89. X#O ltonegroup    tonegroup    %%    3    2
  90. X#O ltonenum    tonenum        %%    63    3
  91. X#O utonegroup    tonegroup    %%    3    4
  92. X#O utonenum    tonenum        %%    63    5
  93. X#O lkeyshift    keyshift    %%    48    6
  94. X#O ukeyshift    keyshift    %%    48    7
  95. X#O lfinetune    finetune    %%    100    8
  96. X#O ufinetune    finetune    %%    100    9
  97. X#O lbendrange    bendrange    %%    24    10
  98. X#O ubendrange    bendrange    %%    24    11
  99. X#O lassignmode    assignmode    %%    3    12
  100. X#O uassignmode    assignmode    %%    3    13
  101. X#O lreverbsw    onoff        %%    1    14
  102. X#O ureverbsw    onoff        %%    1    15
  103. X#O tonebal    tonebal        %%    100    19
  104. X#O autopitch    num        %%    127    -60
  105. X#O autovol    num        %%    127    -63
  106. X#O autodur    num        %%    20    -5    *5
  107. X#O autochan    num        %%    16    -1    *5
  108. XNULL,NULL,-1,-1,-1,-1,visnum,0,0,0,0
  109. X};
  110. X
  111. X/*
  112. X * dpatnum
  113. X *
  114. X * Convert a voice number (0 to 127) to the string displayed in the
  115. X * librarian (ie. 011 to 188).
  116. X */
  117. X
  118. Xchar *
  119. Xdpatnum(n)
  120. X{
  121. X    static char v[4];
  122. X
  123. X    if ( n < 0 || n > 188 )
  124. X        return("???");
  125. X
  126. X    if(n < 64) {
  127. X        v[0] = '0';
  128. X    } else {
  129. X        v[0] = '1';
  130. X        n -= 64;
  131. X    }
  132. X    v[1] = n/8 + '1';
  133. X    v[2] = n%8 + '1';
  134. X    v[3] = '\0';
  135. X    return(v);
  136. X}
  137. X
  138. X/*
  139. X * dnumpat
  140. X *
  141. X * Convert a display-style voice number (011 to 188) to internal
  142. X * format (0 to 127).
  143. X */
  144. X
  145. Xdnumpat(n)
  146. Xint n;
  147. X{
  148. X    int ld, md, rd;
  149. X    
  150. X    /* crack out the digits as octal codes */
  151. X    ld = (n / 100); /* left digit */
  152. X    n %= 100;
  153. X    md = (n / 10) - 1; /* middle digit */
  154. X    rd = (n % 10) - 1; /* right digit */
  155. X
  156. X    if(ld < 0 || ld > 1 || md < 0 || md > 7 || rd < 0 || rd > 7) {
  157. X        return(-1);
  158. X    } else {
  159. X        return((ld * 64) + (md * 8) + rd); /* combine as octal */
  160. X    }
  161. X}
  162. X
  163. X/*
  164. X * dpatdin
  165. X *
  166. X * Take library bank 'data' and stuff values in the P array, by using
  167. X * the setval function.
  168. X */
  169. X
  170. Xdpatdin(data)
  171. Xchar *data;
  172. X{
  173. X    /* The first RESERVESIZE bytes are reserved (arbitrarily) for the voice name */
  174. X#SETVAL
  175. X}
  176. X
  177. X/*
  178. X * dpatdout
  179. X *
  180. X * Take (possibly changed) parameters values out of the P array and
  181. X * put them back into the library bank 'data'.
  182. X */
  183. X
  184. Xdpatdout(data)
  185. Xchar *data;
  186. X{
  187. X#GETVAL
  188. X}
  189. X
  190. X/*
  191. X * dpatsedit
  192. X *
  193. X * Send a single voice to the edit buffer of the D10.  This will be whatever
  194. X * voice is currently selected.
  195. X */
  196. X
  197. Xdpatsedit(data)
  198. Xchar *data;
  199. X{
  200. X    int n;
  201. X    int cksum;
  202. X    
  203. X    sendmidi(0xf0);
  204. X    sendmidi(0x41);
  205. X    sendmidi(0x10);
  206. X    sendmidi(0x16);
  207. X    sendmidi(0x12);        /* DT1 - Data set 1 command */
  208. X    sendmidi(0x03);        /* address msb */
  209. X    cksum = 0x03;
  210. X    sendmidi(0x04);
  211. X    cksum += 0x04;
  212. X    sendmidi(0x00);        /* address lsb */
  213. X    cksum += 0x00;
  214. X    for(n = 0; n < D10PATSIZE; n++) {
  215. X        sendmidi(data[n + RESERVESIZE] & 0x7f);
  216. X        cksum += data[n + RESERVESIZE] & 0x7f;
  217. X    }
  218. X    sendmidi((-cksum) & 0x7f);    /* checksum */
  219. X    sendmidi(EOX);
  220. X}
  221. X
  222. X/*
  223. X * dpatnof
  224. X *
  225. X * Return a pointer to the voice name buried in library bank data.
  226. X */
  227. Xchar *
  228. Xdpatnof(data)
  229. Xchar *data;
  230. X{
  231. X    static char currbuff[17];
  232. X    char *p;
  233. X    int m;
  234. X
  235. X    p = currbuff;
  236. X    for ( m = 0 ; m < 16 ; m++ )
  237. X        *p++ = data[m + 41];
  238. X    *p = '\0';
  239. X    return(currbuff);
  240. X}
  241. X
  242. X/*
  243. X * dpatsnof
  244. X *
  245. X * Set the voice name buried in data to name.
  246. X */
  247. Xdpatsnof(data,name)
  248. Xchar *data;
  249. Xchar *name;
  250. X{
  251. X    char *p;
  252. X    int m;
  253. X
  254. X    for ( p = name, m = 0 ; *p != '\0' && m < 16 ; p++, m++ )
  255. X        data[m + 41] = *p;
  256. X    for ( ; m < 16 ; m++ )
  257. X        data[m + 41] = ' ';
  258. X}
  259. X
  260. X/* dpatsone - send a single voice to the D10 */
  261. Xdpatsone(iv, data)
  262. Xint iv;
  263. Xchar *data;
  264. X{
  265. X    int n;
  266. X    int cksum;
  267. X    long curadd;
  268. X    int addbyte;
  269. X
  270. X    curadd = PATBASEADDR;
  271. X
  272. X    for(n = 0; n < iv; n++) {
  273. X        curadd += D10PATSIZE;
  274. X        if((curadd & 0x80) != 0) {
  275. X            curadd &= 0x7fff7f;
  276. X            curadd += 0x100;
  277. X        }
  278. X        if((curadd & 0x8000) != 0) {
  279. X            curadd &= 0x7f7f7f;
  280. X            curadd += 0x10000;
  281. X        }
  282. X    }
  283. X
  284. X    sendmidi(0xf0);
  285. X    sendmidi(0x41);
  286. X    sendmidi(0x10);
  287. X    sendmidi(0x16);
  288. X    sendmidi(0x12);        /* DT1 - Data set 1 command */
  289. X    addbyte = ((curadd >> 16) & 0x7f);    /* address msb */
  290. X    sendmidi(addbyte);
  291. X    cksum = addbyte;
  292. X    addbyte = ((curadd >> 8) & 0x7f);
  293. X    sendmidi(addbyte);
  294. X    cksum += addbyte;
  295. X    addbyte = (curadd & 0x7f);        /* address lsb */
  296. X    sendmidi(addbyte);
  297. X    cksum += addbyte;
  298. X    for(n = 0; n < D10PATSIZE; n++) {
  299. X        sendmidi(data[n + RESERVESIZE] & 0x7f);
  300. X        cksum += data[n + RESERVESIZE] & 0x7f;
  301. X    }
  302. X    sendmidi((-cksum) & 0x7f);    /* checksum */
  303. X    sendmidi(EOX);
  304. X
  305. X    return(0);
  306. X}
  307. X
  308. X/* dpatgbulk - Request and read a bulk dump from the D10 */
  309. Xdpatgbulk(data)
  310. Xchar *data;
  311. X{
  312. X    static    char Buff[BUFSIZ];
  313. X    int n, v, b2, ret = 1;
  314. X    long begin, toolong;
  315. X    long curadd;
  316. X    int addbyte;
  317. X    int cksum;
  318. X    
  319. X    sprintf(Buff,"\nA: ");
  320. X    windstr(Buff);
  321. X
  322. X    curadd = PATBASEADDR;
  323. X
  324. X    for(v = 0; v < Nvoices; v++) {
  325. X
  326. X        flushmidi();
  327. X
  328. X        if(v == 64) {
  329. X            sprintf(Buff,"\nB: ");
  330. X            windstr(Buff);
  331. X        }
  332. X        if((((v > 63) ? (v - 64) : v) % 10) != 0) {
  333. X            sprintf(Buff, ".");
  334. X        } else {
  335. X            sprintf(Buff,"%d", (((v > 63) ? (v - 64) : v) / 10));
  336. X        }
  337. X        windstr(Buff);
  338. X
  339. X    /* request the voice */
  340. X        sendmidi(0xf0);
  341. X        sendmidi(0x41);
  342. X        sendmidi(0x10);
  343. X        sendmidi(0x16);
  344. X        sendmidi(0x11);        /* RQ1 - Data request 1 command */
  345. X
  346. X        addbyte = ((curadd >> 16) & 0x7f);    /* address msb */
  347. X        sendmidi(addbyte);
  348. X        cksum = addbyte;
  349. X        addbyte = ((curadd >> 8) & 0x7f);
  350. X        sendmidi(addbyte);
  351. X        cksum += addbyte;
  352. X        addbyte = (curadd & 0x7f);        /* address lsb */
  353. X        sendmidi(addbyte);
  354. X        cksum += addbyte;
  355. X
  356. X        sendmidi(0x00);        /* length msb */
  357. X        cksum += 0x00;
  358. X        sendmidi(0x00);
  359. X        cksum += 0x00;
  360. X        sendmidi(D10PATSIZE);    /* length lsb */
  361. X        cksum += D10PATSIZE;
  362. X
  363. X        sendmidi((-cksum) & 0x7f);    /* checksum */
  364. X        sendmidi(EOX);
  365. X    
  366. X    /* set up timeout */
  367. X        begin = milliclock();
  368. X        toolong = begin + (1000 * TIMEOUT);
  369. X    
  370. X    /* read header */
  371. X        for(n = 0; n < 8; ) {
  372. X            if ( STATMIDI ) {
  373. X                b2 = (getmidi() & 0xff);
  374. X                /* burn active sensing and timing clock */
  375. X                if((b2 != 0xfe) && (b2 != 0xf8))
  376. X                    n++;
  377. X            } else {
  378. X                if ( milliclock() > toolong ) {
  379. X                    Reason = "Timeout waiting for header";
  380. X                    goto getout;
  381. X                }
  382. X            }
  383. X        }
  384. X
  385. X    /* read data */
  386. X        for(n = 0; n < D10PATSIZE; ) {
  387. X            if ( STATMIDI ) {
  388. X                b2 = (getmidi() & 0xff);
  389. X                /* burn active sensing and timing clock */
  390. X                if((b2 != 0xfe) && (b2 != 0xf8)) {
  391. X                    VOICEBYTE(data,v,n + RESERVESIZE) = b2;
  392. X                    n++;
  393. X                }
  394. X            } else {
  395. X                if ( milliclock() > toolong ) {
  396. X                    Reason = "Timeout reading data";
  397. X                    goto timeout;
  398. X                }
  399. X            }
  400. X        }
  401. X
  402. X    timeout:
  403. X        if ( n != D10PATSIZE ) {
  404. X            Reason = "Timeout reading data!";
  405. X            goto getout;
  406. X        }
  407. X
  408. X    /* read checksum */
  409. X        for(n = 0; n < 1; ) {
  410. X            if ( STATMIDI ) {
  411. X                b2 = (getmidi() & 0xff);
  412. X                /* burn active sensing and timing clock */
  413. X                if((b2 != 0xfe) && (b2 != 0xf8))
  414. X                    n++;
  415. X            } else {
  416. X                if ( milliclock() > toolong ) {
  417. X                    Reason = "Timeout reading checksum";
  418. X                    goto getout;
  419. X                }
  420. X            }
  421. X        }
  422. X
  423. X    /* read EOX */
  424. X        for(n = 0; n < 1; ) {
  425. X            if ( STATMIDI ) {
  426. X                b2 = (getmidi() & 0xff);
  427. X                /* burn active sensing and timing clock */
  428. X                if((b2 != 0xfe) && (b2 != 0xf8))
  429. X                    if ( b2 != EOX ) {
  430. X                        sprintf(Buff,"EOX not received (%X)\n", b2);
  431. X                        Reason = Buff;
  432. X                        goto getout;
  433. X                    }
  434. X                    n++;
  435. X            } else {
  436. X                if ( milliclock() > toolong ) {
  437. X                    Reason = "Timeout reading EOX";
  438. X                    goto getout;
  439. X                }
  440. X            }
  441. X        }
  442. X
  443. X        curadd += D10PATSIZE;
  444. X
  445. X        if((curadd & 0x80) != 0) {
  446. X            curadd &= 0x7fff7f;
  447. X            curadd += 0x100;
  448. X        }
  449. X        if((curadd & 0x8000) != 0) {
  450. X            curadd &= 0x7f7f7f;
  451. X            curadd += 0x10000;
  452. X        }
  453. X
  454. X    } /* go back for another voice */
  455. X
  456. X    Reason = "";
  457. X    ret = 0;    /* all's well */
  458. X
  459. Xgetout:
  460. X    return(ret);
  461. X}
  462. X
  463. X/* dpatsbulk - send a bulk dump to the D10 */
  464. Xdpatsbulk(data)
  465. Xchar *data;
  466. X{
  467. X    static char Buff[BUFSIZ];
  468. X    int v, n;
  469. X    int cksum;
  470. X    long curadd;
  471. X    int addbyte, databyte;
  472. X    int curoff;
  473. X
  474. X    curadd = PATBASEADDR;
  475. X    curoff = 0;    
  476. X    sprintf(Buff,"\nA: ");
  477. X    windstr(Buff);
  478. X
  479. X    for(v = 0; v <Nvoices ; v++) {
  480. X        if(v == 64) {
  481. X            sprintf(Buff,"\nB: ");
  482. X            windstr(Buff);
  483. X        }
  484. X        if((((v > 63) ? (v - 64) : v) % 10) != 0) {
  485. X            sprintf(Buff, ".");
  486. X        } else {
  487. X            sprintf(Buff,"%d", (((v > 63) ? (v - 64) : v) / 10));
  488. X        }
  489. X
  490. X        windstr(Buff);
  491. X        sendmidi(0xf0);
  492. X        sendmidi(0x41);
  493. X        sendmidi(0x10);
  494. X        sendmidi(0x16);
  495. X        sendmidi(0x12);        /* DT1 - Data set 1 command */
  496. X        addbyte = ((curadd >> 16) & 0x7f);    /* address msb */
  497. X        sendmidi(addbyte);
  498. X        cksum = addbyte;
  499. X        addbyte = ((curadd >> 8) & 0x7f);
  500. X        sendmidi(addbyte);
  501. X        cksum += addbyte;
  502. X        addbyte = (curadd & 0x7f);        /* address lsb */
  503. X        sendmidi(addbyte);
  504. X        cksum += addbyte;
  505. X
  506. X        for(n = 0; n < D10PATSIZE; n++) {
  507. X            databyte = data[curoff + n + RESERVESIZE] & 0x7f;
  508. X            sendmidi(databyte);
  509. X            cksum += databyte;
  510. X        }
  511. X        sendmidi((-cksum) & 0x7f);    /* checksum */
  512. X        sendmidi(EOX);
  513. X
  514. X        curadd += D10PATSIZE;
  515. X        if((curadd & 0x80) != 0) {
  516. X            curadd &= 0x7fff7f;
  517. X            curadd += 0x100;
  518. X        }
  519. X        if((curadd & 0x8000) != 0) {
  520. X            curadd &= 0x7f7f7f;
  521. X            curadd += 0x10000;
  522. X        }
  523. X        curoff += (D10PATSIZE + RESERVESIZE);
  524. X    }
  525. X    return(0);
  526. X}
  527. X
  528. X/* end */
  529. END_OF_FILE
  530. if test 10002 -ne `wc -c <'d10pat.mnu'`; then
  531.     echo shar: \"'d10pat.mnu'\" unpacked with wrong size!
  532. fi
  533. # end of 'd10pat.mnu'
  534. fi
  535. if test -f 'd10tim.mnu' -a "${1}" != "-c" ; then 
  536.   echo shar: Will not clobber existing file \"'d10tim.mnu'\"
  537. else
  538. echo shar: Extracting \"'d10tim.mnu'\" \(9098 characters\)
  539. sed "s/^X//" >'d10tim.mnu' <<'END_OF_FILE'
  540. X/* $Id: d10tim.mnu,v 1.6 89/05/06 17:13:16 lee Exp $
  541. X * GLIB - a Generic LIBrarian and editor for synths
  542. X *
  543. X * D10 Timbre Librarian
  544. X *
  545. X * Code started 23 JAN 89 --  Michael R. Kesti mrk@gvgspd.GVG.TEK.COM
  546. X * modified by Greg Lee
  547. X * $Log:    d10tim.mnu,v $
  548. X * Revision 1.6  89/05/06  17:13:16  lee
  549. X * rel. to comp.sources.misc
  550. X * 
  551. X */
  552. X
  553. X#include "glib.h"
  554. X#include "vis.h"
  555. X
  556. X#define D10TIMSIZE 8
  557. X#define TIMBASEADDR 0x050000
  558. X#define RESERVESIZE 20
  559. X
  560. Xchar *visnum(), *visonoff();
  561. X
  562. X/* This array contains arbitrary screen labels */
  563. Xstruct labelinfo Ldtim[] = {
  564. X#MENU
  565. X
  566. X
  567. X
  568. X
  569. X
  570. X
  571. X
  572. X
  573. X                         Tone Select         %%
  574. X                         Key Shift           %
  575. X                         Fine Tune           %
  576. X                         Bender Range        %
  577. X                         Assign Mode         %
  578. X                         Reverb Switch       %
  579. X
  580. X
  581. X
  582. X
  583. X
  584. X
  585. X
  586. X
  587. X
  588. X Press SPACE BAR to sound note %   at volume %   for duration %  on channel % .
  589. X#END
  590. X-1,-1,NULL
  591. X};
  592. X
  593. Xstruct paraminfo  Pdtim[] =  {
  594. X/*
  595. XNAME        TYPE        POS    MAX    OFFSET    MASK    SHIFT    ADHOC
  596. X */
  597. X#O tonegroup    tonegroup    %%    3    0
  598. X#O tonenum    tonenum        %%    63    1
  599. X#O keyshift    keyshift    %%    48    2
  600. X#O finetune    finetune    %%    100    3
  601. X#O bendrange    bendrange    %%    24    4
  602. X#O assignmode    assignmode    %%    3    5
  603. X#O reverbsw    onoff        %%    1    6
  604. X#O autopitch    num        %%    127    -60
  605. X#O autovol    num        %%    127    -63
  606. X#O autodur    num        %%    20    -5    *5
  607. X#O autochan    num        %%    16    -1    *5
  608. XNULL,NULL,-1,-1,-1,-1,visnum,0,0,0,0
  609. X};
  610. X
  611. X/*
  612. X * dtimnum
  613. X *
  614. X * Convert a voice number (0 to 127) to the string displayed in the
  615. X * librarian (ie. 011 to 188).
  616. X */
  617. X
  618. Xchar *
  619. Xdtimnum(n)
  620. X{
  621. X    static char v[4];
  622. X
  623. X    if ( n < 0 || n > 188 )
  624. X        return("???");
  625. X
  626. X    if(n < 64) {
  627. X        v[0] = '0';
  628. X    } else {
  629. X        v[0] = '1';
  630. X        n -= 64;
  631. X    }
  632. X    v[1] = n/8 + '1';
  633. X    v[2] = n%8 + '1';
  634. X    v[3] = '\0';
  635. X    return(v);
  636. X}
  637. X
  638. X/*
  639. X * dnumtim
  640. X *
  641. X * Convert a display-style voice number (011 to 188) to internal
  642. X * format (0 to 127).
  643. X */
  644. X
  645. Xdnumtim(n)
  646. Xint n;
  647. X{
  648. X    int ld, md, rd;
  649. X    
  650. X    /* crack out the digits as octal codes */
  651. X    ld = (n / 100); /* left digit */
  652. X    n %= 100;
  653. X    md = (n / 10) - 1; /* middle digit */
  654. X    rd = (n % 10) - 1; /* right digit */
  655. X
  656. X    if(ld < 0 || ld > 1 || md < 0 || md > 7 || rd < 0 || rd > 7) {
  657. X        return(-1);
  658. X    } else {
  659. X        return((ld * 64) + (md * 8) + rd); /* combine as octal */
  660. X    }
  661. X}
  662. X
  663. X/*
  664. X * dtimdin
  665. X *
  666. X * Take library bank 'data' and stuff values in the P array, by using
  667. X * the setval function.
  668. X */
  669. X
  670. Xdtimdin(data)
  671. Xchar *data;
  672. X{
  673. X    /* The first RESERVESIZE bytes are reserved (arbitrarily) for the voice name */
  674. X#SETVAL
  675. X}
  676. X
  677. X/*
  678. X * dtimdout
  679. X *
  680. X * Take (possibly changed) parameters values out of the P array and
  681. X * put them back into the library bank 'data'.
  682. X */
  683. X
  684. Xdtimdout(data)
  685. Xchar *data;
  686. X{
  687. X#GETVAL
  688. X}
  689. X
  690. X/*
  691. X * dtimsedit
  692. X *
  693. X * Send a single voice to the edit buffer of the D10.  This will be whatever
  694. X * voice is currently selected.
  695. X */
  696. X
  697. Xdtimsedit(data)
  698. Xchar *data;
  699. X{
  700. X    int n;
  701. X    int cksum;
  702. X    
  703. X    sendmidi(0xf0);
  704. X    sendmidi(0x41);
  705. X    sendmidi(0x10);
  706. X    sendmidi(0x16);
  707. X    sendmidi(0x12);        /* DT1 - Data set 1 command */
  708. X    sendmidi(0x03);        /* address msb */
  709. X    cksum = 0x03;
  710. X    sendmidi(0x00);
  711. X    cksum += 0x00;
  712. X    sendmidi(0x00);        /* address lsb */
  713. X    cksum += 0x00;
  714. X    for(n = 0; n < D10TIMSIZE; n++) {
  715. X        sendmidi(data[n + RESERVESIZE] & 0x7f);
  716. X        cksum += data[n + RESERVESIZE] & 0x7f;
  717. X    }
  718. X    sendmidi((-cksum) & 0x7f);    /* checksum */
  719. X    sendmidi(EOX);
  720. X}
  721. X
  722. X/*
  723. X * dtimnof
  724. X *
  725. X * Return a pointer to the voice name buried in library bank data.
  726. X */
  727. Xchar *
  728. Xdtimnof(data)
  729. Xchar *data;
  730. X{
  731. X
  732. X    static char buf[4];
  733. X    int n;
  734. X
  735. X    for(n = 0; n < D10TIMSIZE; n++)
  736. X        if ( data[n + RESERVESIZE] != 0 ) break;
  737. X    if ( n != D10TIMSIZE ) {
  738. X        strcpy(buf, vistonegroup(data[RESERVESIZE + 0]));
  739. X        strcat(buf, vistonenum(data[RESERVESIZE + 1]));
  740. X    } else
  741. X        strcpy(buf, "   ");
  742. X
  743. X    return(buf);
  744. X}
  745. X
  746. X/*
  747. X * dtimsnof
  748. X *
  749. X * Set the voice name buried in data to name.
  750. X */
  751. Xdtimsnof(data,name)
  752. Xchar *data;
  753. Xchar *name;
  754. X{
  755. X}
  756. X
  757. X/* dtimsone - send a single voice to the D10 */
  758. Xdtimsone(iv, data)
  759. Xint iv;
  760. Xchar *data;
  761. X{
  762. X    int n;
  763. X    int cksum;
  764. X    long curadd;
  765. X    int addbyte;
  766. X
  767. X    curadd = TIMBASEADDR;
  768. X
  769. X    for(n = 0; n < iv; n++) {
  770. X        curadd += D10TIMSIZE;
  771. X        if((curadd & 0x80) != 0) {
  772. X            curadd &= 0x7fff7f;
  773. X            curadd += 0x100;
  774. X        }
  775. X        if((curadd & 0x8000) != 0) {
  776. X            curadd &= 0x7f7f7f;
  777. X            curadd += 0x10000;
  778. X        }
  779. X    }
  780. X
  781. X    sendmidi(0xf0);
  782. X    sendmidi(0x41);
  783. X    sendmidi(0x10);
  784. X    sendmidi(0x16);
  785. X    sendmidi(0x12);        /* DT1 - Data set 1 command */
  786. X    addbyte = ((curadd >> 16) & 0x7f);    /* address msb */
  787. X    sendmidi(addbyte);
  788. X    cksum = addbyte;
  789. X    addbyte = ((curadd >> 8) & 0x7f);
  790. X    sendmidi(addbyte);
  791. X    cksum += addbyte;
  792. X    addbyte = (curadd & 0x7f);        /* address lsb */
  793. X    sendmidi(addbyte);
  794. X    cksum += addbyte;
  795. X    for(n = 0; n < D10TIMSIZE; n++) {
  796. X        sendmidi(data[n + RESERVESIZE] & 0x7f);
  797. X        cksum += data[n + RESERVESIZE] & 0x7f;
  798. X    }
  799. X    sendmidi((-cksum) & 0x7f);    /* checksum */
  800. X    sendmidi(EOX);
  801. X
  802. X    return(0);
  803. X}
  804. X
  805. X/* dtimgbulk - Request and read a bulk dump from the D10 */
  806. Xdtimgbulk(data)
  807. Xchar *data;
  808. X{
  809. X    static    char Buff[BUFSIZ];
  810. X    int n, v, b2, ret = 1;
  811. X    long begin, toolong;
  812. X    long curadd;
  813. X    int addbyte;
  814. X    int cksum;
  815. X    
  816. X    sprintf(Buff,"\nA: ");
  817. X    windstr(Buff);
  818. X
  819. X    curadd = TIMBASEADDR;
  820. X
  821. X    for(v = 0; v < Nvoices; v++) {
  822. X
  823. X        flushmidi();
  824. X
  825. X        if(v == 64) {
  826. X            sprintf(Buff,"\nB: ");
  827. X            windstr(Buff);
  828. X        }
  829. X        if((((v > 63) ? (v - 64) : v) % 10) != 0) {
  830. X            sprintf(Buff, ".");
  831. X        } else {
  832. X            sprintf(Buff,"%d", (((v > 63) ? (v - 64) : v) / 10));
  833. X        }
  834. X        windstr(Buff);
  835. X
  836. X    /* request the voice */
  837. X        sendmidi(0xf0);
  838. X        sendmidi(0x41);
  839. X        sendmidi(0x10);
  840. X        sendmidi(0x16);
  841. X        sendmidi(0x11);        /* RQ1 - Data request 1 command */
  842. X
  843. X        addbyte = ((curadd >> 16) & 0x7f);    /* address msb */
  844. X        sendmidi(addbyte);
  845. X        cksum = addbyte;
  846. X        addbyte = ((curadd >> 8) & 0x7f);
  847. X        sendmidi(addbyte);
  848. X        cksum += addbyte;
  849. X        addbyte = (curadd & 0x7f);        /* address lsb */
  850. X        sendmidi(addbyte);
  851. X        cksum += addbyte;
  852. X
  853. X        sendmidi(0x00);        /* length msb */
  854. X        cksum += 0x00;
  855. X        sendmidi(0x00);
  856. X        cksum += 0x00;
  857. X        sendmidi(D10TIMSIZE);    /* length lsb */
  858. X        cksum += D10TIMSIZE;
  859. X
  860. X        sendmidi((-cksum) & 0x7f);    /* checksum */
  861. X        sendmidi(EOX);
  862. X
  863. X    /* set up timeout */
  864. X        begin = milliclock();
  865. X        toolong = begin + (1000 * TIMEOUT);
  866. X    
  867. X    /* read header */
  868. X        for(n = 0; n < 8; ) {
  869. X            if ( STATMIDI ) {
  870. X                b2 = (getmidi() & 0xff);
  871. X                /* burn active sensing and timing clock */
  872. X                if((b2 != 0xfe) && (b2 != 0xf8))
  873. X                    n++;
  874. X            } else {
  875. X                if ( milliclock() > toolong ) {
  876. X                    Reason = "Timeout waiting for header";
  877. X                    goto getout;
  878. X                }
  879. X            }
  880. X        }
  881. X
  882. X    /* read data */
  883. X        for(n = 0; n < D10TIMSIZE; ) {
  884. X            if ( STATMIDI ) {
  885. X                b2 = (getmidi() & 0xff);
  886. X                /* burn active sensing and timing clock */
  887. X                if((b2 != 0xfe) && (b2 != 0xf8)) {
  888. X                    VOICEBYTE(data,v,n + RESERVESIZE) = b2;
  889. X                    n++;
  890. X                }
  891. X            } else {
  892. X                if ( milliclock() > toolong ) {
  893. X                    Reason = "Timeout reading data";
  894. X                    goto timeout;
  895. X                }
  896. X            }
  897. X        }
  898. X
  899. X    timeout:
  900. X        if ( n != D10TIMSIZE ) {
  901. X            Reason = "Timeout reading data!";
  902. X            goto getout;
  903. X        }
  904. X
  905. X    /* read checksum */
  906. X        for(n = 0; n < 1; ) {
  907. X            if ( STATMIDI ) {
  908. X                b2 = (getmidi() & 0xff);
  909. X                /* burn active sensing and timing clock */
  910. X                if((b2 != 0xfe) && (b2 != 0xf8))
  911. X                    n++;
  912. X            } else {
  913. X                if ( milliclock() > toolong ) {
  914. X                    Reason = "Timeout reading checksum";
  915. X                    goto getout;
  916. X                }
  917. X            }
  918. X        }
  919. X
  920. X    /* read EOX */
  921. X        for(n = 0; n < 1; ) {
  922. X            if ( STATMIDI ) {
  923. X                b2 = (getmidi() & 0xff);
  924. X                /* burn active sensing and timing clock */
  925. X                if((b2 != 0xfe) && (b2 != 0xf8))
  926. X                    if ( b2 != EOX ) {
  927. X                        sprintf(Buff,"EOX not received (%X)\n", b2);
  928. X                        Reason = Buff;
  929. X                        goto getout;
  930. X                    }
  931. X                    n++;
  932. X            } else {
  933. X                if ( milliclock() > toolong ) {
  934. X                    Reason = "Timeout reading EOX";
  935. X                    goto getout;
  936. X                }
  937. X            }
  938. X        }
  939. X        curadd += D10TIMSIZE;
  940. X        if((curadd & 0x80) != 0) {
  941. X            curadd &= 0x7fff7f;
  942. X            curadd += 0x100;
  943. X        }
  944. X        if((curadd & 0x8000) != 0) {
  945. X            curadd &= 0x7f7f7f;
  946. X            curadd += 0x10000;
  947. X        }
  948. X
  949. X
  950. X    } /* go back for another voice */
  951. X
  952. X    Reason = "";
  953. X    ret = 0;    /* all's well */
  954. X
  955. Xgetout:
  956. X    return(ret);
  957. X}
  958. X
  959. X/* dtimsbulk - send a bulk dump to the D10 */
  960. Xdtimsbulk(data)
  961. Xchar *data;
  962. X{
  963. X    static char Buff[BUFSIZ];
  964. X    int v, n;
  965. X    int cksum;
  966. X    long curadd;
  967. X    int addbyte, databyte;
  968. X    int curoff;
  969. X
  970. X    curadd = TIMBASEADDR;
  971. X    curoff = 0;    
  972. X    sprintf(Buff,"\nA: ");
  973. X    windstr(Buff);
  974. X
  975. X    for(v = 0; v <Nvoices ; v++) {
  976. X        if(v == 64) {
  977. X            sprintf(Buff,"\nB: ");
  978. X            windstr(Buff);
  979. X        }
  980. X        if((((v > 63) ? (v - 64) : v) % 10) != 0) {
  981. X            sprintf(Buff, ".");
  982. X        } else {
  983. X            sprintf(Buff,"%d", (((v > 63) ? (v - 64) : v) / 10));
  984. X        }
  985. X
  986. X        windstr(Buff);
  987. X        sendmidi(0xf0);
  988. X        sendmidi(0x41);
  989. X        sendmidi(0x10);
  990. X        sendmidi(0x16);
  991. X        sendmidi(0x12);        /* DT1 - Data set 1 command */
  992. X        addbyte = ((curadd >> 16) & 0x7f);    /* address msb */
  993. X        sendmidi(addbyte);
  994. X        cksum = addbyte;
  995. X        addbyte = ((curadd >> 8) & 0x7f);
  996. X        sendmidi(addbyte);
  997. X        cksum += addbyte;
  998. X        addbyte = (curadd & 0x7f);        /* address lsb */
  999. X        sendmidi(addbyte);
  1000. X        cksum += addbyte;
  1001. X
  1002. X        for(n = 0; n < D10TIMSIZE; n++) {
  1003. X            databyte = data[curoff + n + RESERVESIZE] & 0x7f;
  1004. X            sendmidi(databyte);
  1005. X            cksum += databyte;
  1006. X        }
  1007. X        sendmidi((-cksum) & 0x7f);    /* checksum */
  1008. X        sendmidi(EOX);
  1009. X
  1010. X        curadd += D10TIMSIZE;
  1011. X        if((curadd & 0x80) != 0) {
  1012. X            curadd &= 0x7fff7f;
  1013. X            curadd += 0x100;
  1014. X        }
  1015. X        if((curadd & 0x8000) != 0) {
  1016. X            curadd &= 0x7f7f7f;
  1017. X            curadd += 0x10000;
  1018. X        }
  1019. X        curoff += (D10TIMSIZE + RESERVESIZE);
  1020. X    }
  1021. X    return(0);
  1022. X}
  1023. X
  1024. X/* end */
  1025. END_OF_FILE
  1026. if test 9098 -ne `wc -c <'d10tim.mnu'`; then
  1027.     echo shar: \"'d10tim.mnu'\" unpacked with wrong size!
  1028. fi
  1029. # end of 'd10tim.mnu'
  1030. fi
  1031. if test -f 'glib.man' -a "${1}" != "-c" ; then 
  1032.   echo shar: Will not clobber existing file \"'glib.man'\"
  1033. else
  1034. echo shar: Extracting \"'glib.man'\" \(8556 characters\)
  1035. sed "s/^X//" >'glib.man' <<'END_OF_FILE'
  1036. X
  1037. X                                                           GLIB(1) LOCAL
  1038. X
  1039. X
  1040. X
  1041. XNAME
  1042. X     glib - patch editor and librarian for synthesizers
  1043. X
  1044. XSYNOPSIS
  1045. X     glib
  1046. X
  1047. XDESCRIPTION
  1048. X     Glib (one syllable) is a text-screen-oriented librarian and patch
  1049. X     editor for electronic synthesizers.  It is structured in an attempt
  1050. X     to make it easy to add support for new synthesizers.  Glib presents
  1051. X     three types of menu screens:  synthesizer selection, patch
  1052. X     librarian, and patch editor.  However, depending on choices made
  1053. X     when glib was compiled, there may be no synthesizer selection menu,
  1054. X     or it may be used to select different sub-parts of a single synth,
  1055. X     rather than among different synths.  From the outermost selection
  1056. X     menu you descend to the librarian.  If there is no synth selection
  1057. X     menu, you see the librarian screen immediately after invoking glib.
  1058. X
  1059. X     The librarian part of the program manipulates 1 synth bank of
  1060. X     voices (which can be uploaded to or downloaded from the synth), and
  1061. X     3 banks of library voices (which can be read/written to disk).
  1062. X     When you exit the librarian and select a different synth, the
  1063. X     contents of the library banks and other settings (e.g. midi
  1064. X     channel) for each are retained.
  1065. X
  1066. X     From the librarian screen you can descend to the patch editor
  1067. X     screen to change or create an individual patch for a given
  1068. X     synthesizer.  Details about using the librarian and the patch
  1069. X     editor are given below.
  1070. X
  1071. X     The glib distribution includes support files for various PCs --
  1072. X     IBM, Atari ST, Macintosh, Amiga.  And you can run glib on Unix (it
  1073. X     uses curses), although obviously most Unix machines don't have midi
  1074. X     I/O.  Trying it out on Unix will give you a feel for what the
  1075. X     program does, so you can decide whether or not it's worth the
  1076. X     trouble to port it to your midi-capable PC.  Or your could edit
  1077. X     patch files on a Unix system and download them to a PC.
  1078. X
  1079. X     The current version of glib, version 1.6, supports the
  1080. X     synthesizers:  DX100, TX81, DEP5, DW8000, Roland D-10, Kawaii K1
  1081. X     K5, DX7, and Casio CZ1.
  1082. X
  1083. XUsing glib - Moving around
  1084. X     Both the librarian and editor parts of glib make use of arrow keys,
  1085. X     <CTRL/B> <CTRL/N> <CTRL/P> <CTRL/F> or h j k l to move the cursor
  1086. X     around.  (The arrow keys may not work on non-Unix versions,
  1087. X     though.) <CTRL/L> redraws the screen.  These keys are #defined in
  1088. X     glib.h, so you can change them if you want.  To quit from any mode,
  1089. X     use q. In the librarian screen, ? gives a command summary.  Esc or
  1090. X     grave accent key sends an all-notes-off (though the support for
  1091. X     arrow keys may interfere with this use of esc ).
  1092. X
  1093. X
  1094. XUsing glib - The librarian
  1095. X     The screen shows the synth bank on the left, and the current (1 of
  1096. X     3) library bank on the right.  A * identifies the `current' voice,
  1097. X     and you use the arrow keys to move it around.  As soon as you move
  1098. X     to a different voice, it is sent to the `edit buffer' of the synth,
  1099. X     so it is very easy to roam around and see what each voice sounds
  1100. X     like.  Commands:
  1101. X
  1102. X     b -  Cycle through the (3) library banks, displayed on the right
  1103. X          side of the screen.
  1104. X
  1105. X     c -  Set the midi channel for sending/receiving voices.
  1106. X
  1107. X     d -  Download from the (real) synthesizer, replacing the current
  1108. X          contents of the synth bank.
  1109. X
  1110. X     D -  Download from a file, replacing the current contents of the
  1111. X          synth bank.  Same as above, except input comes from file
  1112. X          instead of the synth.  (Implemented only for Unix version.)
  1113. X
  1114. X     e -  Edit the current voice (see editor description below).
  1115. X
  1116. X     f -  List the files on the disk.
  1117. X
  1118. X     p -  Put the yank buffer, replacing the contents of the current
  1119. X          voice.
  1120. X
  1121. X     q -  Quit, going back to `choose a synth'.
  1122. X
  1123. X     r -  Read a bank of voices from a file, replacing entirely the
  1124. X          current library bank.
  1125. X
  1126. X     R -  Read a bank of voices from a text file (created with the W
  1127. X          command).
  1128. X
  1129. X     s -  Swap the current voice with the yank buffer.  2 swaps is a
  1130. X          no-op.
  1131. X
  1132. X     t -  Transfer all voices, either from the current library bank to
  1133. X          the synth bank, or vice versa.
  1134. X
  1135. X     u -  Upload the current contents of the synth bank to the synth.
  1136. X          You are given a choice of sending the entire bank or just the
  1137. X          current voice.
  1138. X
  1139. X     U -  Upload the current contents of the synth bank to a file.  Same
  1140. X          as above, except output goes to file instead of the synth.
  1141. X          (Implemented only for Unix version.)
  1142. X
  1143. X     w -  Write the current library bank to a file.
  1144. X
  1145. X     W -  Write the current library bank to an editable text file.  This
  1146. X          is slow, and is meant for use in some special circumstance -
  1147. X          for instance if you changed the binary format of files, you
  1148. X          might want to convert your old patches.
  1149. X
  1150. X     y -  Yank the current voice into the yank buffer, shown in the
  1151. X          middle of the screen.
  1152. X
  1153. X
  1154. XUsing glib - The editor
  1155. X     In the editor part, arrow keys move the cursor among the parameter
  1156. X     values.  The cursor will only land on parameter values.  Once on a
  1157. X     parameter value, the following keys will affect it:
  1158. X
  1159. X     K -  increase value by 1
  1160. X
  1161. X     J -  decrease value by 1
  1162. X
  1163. X     I -  increase value by 4
  1164. X
  1165. X     M -  decrease value by 4
  1166. X
  1167. X     < -  decrease value to its minimum
  1168. X
  1169. X     > -  increase value to its maximum
  1170. X
  1171. X     S -  assign same value as last assigned
  1172. X
  1173. X     These keys are defined in glib.h, and should be changed to suit
  1174. X     your own tastes.  I'm not thrilled with these choices, myself, but
  1175. X     I had to use something, and at least the hand may stay in one
  1176. X     place.
  1177. X
  1178. X     To change the name of a voice, use `N'.
  1179. X
  1180. X     The `auto-note' is played whenever you press the space bar.  This
  1181. X     is a convenient way of playing a note as soon as you make a change
  1182. X     (ie.  you can do everything from the computer keyboard).  You can
  1183. X     change the auto-note parameters (pitch, duration, volume, channel)
  1184. X     the same way as all the other parameters.
  1185. X
  1186. XSynthesizers
  1187. X     Here is a list of the sample patch files for each synthesizer in
  1188. X     the 1.6 release of glib, together with occasional notes on the
  1189. X     current implementation.
  1190. X
  1191. X     DX100
  1192. X          Sample patches:  fact1.dx1
  1193. X
  1194. X     TX81 Sample patches:  fact1.t8p fact1.tx8
  1195. X
  1196. X     DEP5 Sample patches:  fact1.dp5
  1197. X
  1198. X     DW8000
  1199. X          Sample patches:  fact1.dw8
  1200. X
  1201. X     Roland D-10
  1202. X          Sample patches:  d10fact.pat d10fact.rsu d10fact.tim
  1203. X          d10fact.ton d10fact.tra d10fact.urp
  1204. X
  1205. X     Kawaii K1
  1206. X          Sample patches:  k1fact.mlt k1fact.sgl
  1207. X
  1208. X          Voices are not sent to the K1's edit buffer.
  1209. X          For Kawai K1 multi patches, names of single patches referred
  1210. X          to are displayed when they can be found in the synth voice
  1211. X          bank of the single patches module.  The names are updated
  1212. X          whenever a new bank of voices is transferred into this bank.
  1213. X
  1214. X     Kawaii K5
  1215. X          Sample patches:  card1.k5m card1.k5s
  1216. X          Editing of voices is not implemented.
  1217. X
  1218. X     DX7  Sample patches:  n001.dx7 rom1.d7s
  1219. X
  1220. X          Some of the parameters on the DX7s editing screen are
  1221. X          `multiplexed'.  Move the cursor to the `Modulation Wheel'
  1222. X          legend, then `increment' and `decrement' this field:  the
  1223. X          fields below it will cycle through the `Modulation Wheel',
  1224. X          `Aftertouch', `Breath Control', `Foot Control', and `MIDI
  1225. X          Control' parameters.
  1226. X
  1227. X     Casio CZ1
  1228. X          Sample patches:  bank1.cz1
  1229. X
  1230. X          The performance parameters given on the lower part of the
  1231. X          editing screen, Glib, Portamento, etc., are just there pro
  1232. X          forma.  In the current version, setting them doesn't
  1233. X          accomplish anything.
  1234. X
  1235. XAUTHORS
  1236. X
  1237. X     original version for dx100, tx81z, dep5:  Tim Thompson,
  1238. X          ...twitch!glimmer!tjt
  1239. X
  1240. X     Macintosh and dw1000 support:  Steve Falco.
  1241. X
  1242. X     d10 support:  Michael Kesti, mrk@gvgspd.GVG.TEK.COM
  1243. X
  1244. X     Amiga and k5 support:  Alan Bland, mab@druwy.ATT.COM
  1245. X          or att!druwy!mab
  1246. X
  1247. X     K1 support and menu mods:  Greg Lee, lee@uhccux.uhcc.hawaii.edu
  1248. X
  1249. X     DX7 support:  Scott Snyder, ssnyder@citjulie.bitnet,
  1250. X          ssnyder@juliet.caltech.edu (addresses valid until mid-June)
  1251. X
  1252. X     CZ1 support:  Mark R. Rinfret, mrr@amanpt1.Newport.RI.US,
  1253. X          ...!rayssd!galaxia!amanpt1!mrr
  1254. X
  1255. X     arp file requester, Amiga version:  Dave Weiler
  1256. X
  1257. X     Some of the code was originally written by Steve Frysinger
  1258. X     (moss!spf), John Helton, and James Gosling.
  1259. END_OF_FILE
  1260. if test 8556 -ne `wc -c <'glib.man'`; then
  1261.     echo shar: \"'glib.man'\" unpacked with wrong size!
  1262. fi
  1263. # end of 'glib.man'
  1264. fi
  1265. if test -f 'glibinit.dp5' -a "${1}" != "-c" ; then 
  1266.   echo shar: Will not clobber existing file \"'glibinit.dp5'\"
  1267. else
  1268. echo shar: Extracting \"'glibinit.dp5'\" \(9806 characters\)
  1269. sed "s/^X//" >'glibinit.dp5' <<'END_OF_FILE'
  1270. X#-This-is-the-Chdepth-data
  1271. X0,0  7,1  14,2  18,3  21,4
  1272. X24,5  27,6  29,7  31,8  33,9
  1273. X35,10 37,11 39,12 40,13 42,14
  1274. X44,15 45,16 47,17 48,18 49,19
  1275. X51,20 52,21 53,22 54,23 56,24
  1276. X57,25 58,26 59,27 60,28 61,29
  1277. X62,30 63,31 64,32 65,33 66,34
  1278. X67,35 68,36 69,37 70,38 71,39
  1279. X72,40 74,42 75,43 76,45 77,46
  1280. X78,47 79,48 80,49 81,51 82,52
  1281. X83,53 84,54 85,56 86,57 87,58
  1282. X88,60 89,61 90,62 91,64 92,65
  1283. X93,67 94,68 95,70 96,71 97,73
  1284. X98,74 99,76 100,77 101,79 102,80
  1285. X103,82 104,83 105,85 106,87 107,88
  1286. X108,90 109,92 110,93 111,95 112,97
  1287. X113,98 114,100 115,102 116,104 117,105
  1288. X118,107 119,109 120,111 121,113 122,115
  1289. X123,117 124,118 125,120 126,122 127,124
  1290. X128,126 129,128 130,130 131,132 132,134
  1291. X133,136 134,138 135,140 136,142 137,145
  1292. X138,147 139,149 140,151 141,153 142,155
  1293. X143,157 144,160 145,162 146,164 147,166
  1294. X148,169 149,171 150,173 151,176 152,178
  1295. X153,180 154,183 155,185 156,187 157,190
  1296. X158,192 159,195 160,197 161,200 162,202
  1297. X163,204 164,207 165,210 166,212 167,215
  1298. X168,217 169,220 170,222 171,225 172,228
  1299. X173,230 174,233 175,236 176,238 177,241
  1300. X178,244 179,247 180,249 181,252 182,255
  1301. X183,258 184,261 185,263 186,266 187,269
  1302. X188,272 189,275 190,278 191,281 192,284
  1303. X193,287 194,290 195,293 196,296 197,299
  1304. X198,302 199,305 200,308 201,311 202,314
  1305. X203,317 204,320 205,323 206,327 207,330
  1306. X208,333 209,336 210,339 211,343 212,346
  1307. X213,349 214,352 215,356 216,359 217,362
  1308. X218,366 219,369 220,372 221,376 222,379
  1309. X223,383 224,386 225,389 226,393 227,396
  1310. X228,400 229,403 230,407 231,411 232,414
  1311. X233,418 234,421 235,425 236,428 237,432
  1312. X238,436 239,439 240,443 241,447 242,451
  1313. X243,454 244,458 245,462 246,466 247,469
  1314. X248,473 249,477 250,481 251,485 252,489
  1315. X253,492 254,496 255,500
  1316. X#-This-is-the-freq-data
  1317. X30 31 32 33 34 35 36 37 38 39
  1318. X40 41 42 43 44 45 46 47 48 49
  1319. X51 53 55 57 59 61 63 65 67 69
  1320. X71 73 75 77 79 81 83 86 89 92
  1321. X95 98 101 104 107 110 113 116 119 123
  1322. X127 131 135 139 143 147 151 155 160 165
  1323. X170 175 180 185 191 197 203 209 215 221
  1324. X228 235 242 249 256 264 272 280 288 297
  1325. X306 315 324 334 344 354 364 375 386 397
  1326. X409 421 433 446 459 473 487 501 516 531
  1327. X547 563 580 597 615 633 652 671 691 711
  1328. X732 754 776 799 823 847 872 898 824 851
  1329. X979 1010 1040 1070 1100 1130 1160 1200
  1330. X#-This-is-the-Hf-data
  1331. X0,100 1,99 4,98 6,97 9,96
  1332. X12,95 14,94 17,93 20,92 22,91
  1333. X25,90 28,89 30,88 33,87 36,86
  1334. X39,85 41,84 44,83 47,82 49,81
  1335. X52,80 55,79 57,78 60,77 63,76
  1336. X66,75 68,74 71,73 74,72 76,71
  1337. X79,70 82,69 84,68 87,67 90,66
  1338. X92,65 95,64 98,63 101,62 103,61
  1339. X106,60 109,59 111,58 114,57 117,56
  1340. X119,55 122,54 125,53 128,52 130,51
  1341. X133,50 136,49 138,48 141,47 144,46
  1342. X146,45 149,44 152,43 154,42 157,41
  1343. X160,40 163,39 165,38 168,37 171,36
  1344. X173,35 176,34 179,33 181,32 184,31
  1345. X187,30 189,29 192,28 195,27 198,26
  1346. X200,25 203,24 206,23 208,22 211,21
  1347. X214,20 216,19 219,18 222,17 225,16
  1348. X227,15 230,14 233,13 235,12 238,11
  1349. X241,10 243,9 246,8 249,7 251,6
  1350. X254,5
  1351. X#-This-is-the-Gate-time
  1352. X10 11 11 12 13 14 14 15 16 17
  1353. X18 19 20 21 22 23 24 25 26 28
  1354. X29 30 31 33 34 35 36 38 39 41
  1355. X42 43 45 46 48 50 51 53 54 56
  1356. X58 59 61 63 65 67 68 70 72 74
  1357. X76 78 80 82 84 86 88 90 92 95
  1358. X97 99 101 103 106 108 110 113 115 117
  1359. X120 122 125 127 130 132 135 138 140 143
  1360. X146 148 151 154 157 159 162 165 168 171
  1361. X174 177 180 183 186 189 192 195 198 201
  1362. X205 208 211 214 217 221 224 227 231 234
  1363. X238 241 245 248 252 255 259 262 266 270
  1364. X273 277 281 285 288 292 296 300 304 308
  1365. X312 316 319 323 328 332 336 340 344 348
  1366. X352 356 361 365 369 373 378 382 387 391
  1367. X395 400 404 409 413 418 422 427 432 436
  1368. X441 446 450 455 460 465 470 474 479 484
  1369. X489 494 499 504 509 514 519 524 530 535
  1370. X540 545 550 556 561 566 571 577 582 588
  1371. X593 598 604 609 615 621 626 632 637 643
  1372. X649 654 660 666 672 677 683 689 695 701
  1373. X707 713 719 725 731 737 743 749 755 761
  1374. X767 774 780 786 792 799 805 811 818 824
  1375. X831 837 843 850 856 863 870 876 883 889
  1376. X896 903 910 916 923 930 937 944 950 957
  1377. X964 971 978 985 992 999
  1378. X#-This-is-the-Chrate
  1379. X0,3  21,4  32,5  41,6  48,7
  1380. X54,8  60,9 65,10 70,11 74,12
  1381. X79,13 83,14 87,15 90,16 94,17
  1382. X98,18 101,19 104,20 107,21 110,22
  1383. X113,23 116,24 119,25 122,26 125,27
  1384. X130,29 132,30 135,31 137,32 140,33
  1385. X142,34 145,35 147,36 149,37 152,38
  1386. X154,39 156,40 158,41 160,42 162,43
  1387. X164,44 166,45 168,46 170,47 172,48
  1388. X174,49 176,50 178,51 180,52 182,53
  1389. X184,54 186,55 188,56 190,57 191,58
  1390. X193,59 195,60 196,61 198,62 200,63
  1391. X202,64 203,65 205,66 207,67 208,68
  1392. X210,69 211,70 213,71 215,72 216,73
  1393. X218,74 219,75 221,76 222,77 224,78
  1394. X226,79 227,80 229,81 230,82 232,83
  1395. X233,84 234,85 236,86 237,87 239,88
  1396. X240,89 242,90 243,91 244,92 246,93
  1397. X247,94 249,95 250,96 251,97 253,98
  1398. X254,99 155,100
  1399. X#-This-is-Nlrevtime
  1400. X0,-9    3,-8    7,-7    11,-6   15,-5
  1401. X19,-4   23,-3   27,-2   31,-1   35,0
  1402. X38,1    42,2    46,3    50,4    54,5
  1403. X58,6    62,7    66,8    70,9    74,10
  1404. X78,11   82,12   86,13   90,14   94,15
  1405. X97,16   99,17   101,18  102,19  103,20
  1406. X104,21  105,22  106,23  107,24  108,26
  1407. X109,27  110,28  111,30  112,31  113,33
  1408. X114,35  115,36  116,38  117,40  118,42
  1409. X119,44  120,46  121,48  122,51  123,53
  1410. X124,55  125,58  126,60  127,63  128,66
  1411. X129,69  130,71  131,74  132,77  133,80
  1412. X134,83  135,87  136,90  137,93  138,97
  1413. X139,100 142,110 145,120 147,130 150,140
  1414. X152,150 154,160 156,170 158,180 160,190
  1415. X162,200 164,210 166,220 168,230 170,240
  1416. X172,250 173,260 175,270 177,280 180,300
  1417. X181,310 183,320 184,330 186,340 187,350
  1418. X189,360 190,370 191,380 193,390 194,400
  1419. X196,410 197,420 198,430 199,440 201,450
  1420. X202,460 203,470 204,480 206,490 207,500
  1421. X208,510 209,520 210,530 212,540 213,550
  1422. X214,560 215,570 216,580 217,590 218,600
  1423. X219,610 220,620 222,630 223,640 224,650
  1424. X225,660 226,670 227,680 228,690 229,700
  1425. X230,710 231,720 232,730 233,740 234,750
  1426. X235,760 236,770 237,780 238,790 239,810
  1427. X240,820 241,830 242,840 243,850 244,860
  1428. X245,870 246,880 247,890 248,900 249,920
  1429. X250,930 251,940 252,950 253,960 254,970
  1430. X255,990
  1431. X#-This-is-the-Chfeed
  1432. X0  63  89  108 125
  1433. X140 153 166 177 188
  1434. X198 208 217 226 234
  1435. X243 250 258 266 273
  1436. X280 287 294 300 307
  1437. X313 319 325 331 337
  1438. X343 349 354 360 365
  1439. X370 376 381 386 391
  1440. X396 401 406 411 415
  1441. X420 425 429 434 438
  1442. X443 447 452 456 460
  1443. X464 469 473 477 481
  1444. X485 489 493 497 501
  1445. X505 509 513 516 520
  1446. X524 528 531 535 539
  1447. X542 546 550 553 557
  1448. X560 564 567 571 574
  1449. X577 581 584 587 591
  1450. X594 597 601 604 607
  1451. X610 614 617 620 623
  1452. X626 629 632 636 639
  1453. X642 645 648 651 654
  1454. X657 660 663 666 669
  1455. X672 674 677 680 683
  1456. X686 689 692 695 697
  1457. X700 703 706 708 711
  1458. X714 717 719 722 725
  1459. X728 730 733 736 738
  1460. X741 744 746 749 751
  1461. X754 757 759 762 764
  1462. X767 770 772 775 777
  1463. X780 782 785 787 790
  1464. X792 795 797 800 802
  1465. X804 807 809 812 814
  1466. X816 819 821 824 826
  1467. X828 831 833 835 838
  1468. X840 842 845 847 849
  1469. X852 854 856 859 861
  1470. X863 865 868 870 872
  1471. X874 877 879 881 883
  1472. X886 888 890 892 894
  1473. X897 899 901 903 905
  1474. X907 910 912 914 916
  1475. X918 920 922 925 927
  1476. X929 931 933 935 937
  1477. X939 941 944 946 948
  1478. X950 952 954 956 958
  1479. X960 962 964 966 968
  1480. X970 972 974 976 978
  1481. X980 982 984 986 988
  1482. X990 992 994 996 998
  1483. X1000
  1484. X#-this-is-the-Revtime
  1485. X0,1 3,2 7,3 11,4 15,5 19,6 
  1486. X23,7 27,8 31,9 35,10 39,11
  1487. X43,12 46,13 49,14 52,15 55,16
  1488. X58,17 61,18 64,19 67,20 70,21
  1489. X73,22 75,23 78,24 80,25 83,26
  1490. X85,27 87,28 89,29 91,30 93,31
  1491. X95,32 97,33 98,34 100,35 102,36
  1492. X103,37 105,38 107,39 108,40 109,41
  1493. X111,42 112,43 114,44 115,45 116,46
  1494. X117,47 119,48 120,49 121,50 122,51
  1495. X123,52 124,53 125,54 126,55 127,56
  1496. X128,57 129,58 130,59 131,60 132,61
  1497. X133,62 134,63 135,65 136,66 137,67
  1498. X138,68 139,70 140,71 141,72 142,74
  1499. X143,75 144,77 145,78 146,80 147,81
  1500. X148,83 149,85 150,86 151,88 152,90
  1501. X153,92 154,94 155,95 156,97 157,99
  1502. X158,100 160,110 165,120 168,130 172,140
  1503. X175,150 178,160 181,170 184,180 186,190
  1504. X189,200 191,210 193,220 195,230 197,240
  1505. X199,250 200,260 202,270 204,280 205,290
  1506. X206,300 208,310 209,320 211,330 212,340
  1507. X213,350 214,360 215,370 216,380 218,390
  1508. X219,400 220,410 221,420 222,430 223,450
  1509. X224,460 225,470 226,480 227,490 228,500
  1510. X229,520 230,530 231,540 232,560 233,570
  1511. X234,590 235,600 236,620 237,630 238,650
  1512. X239,660 240,680 241,700 242,720 243,740
  1513. X244,750 245,770 246,790 247,810 248,840
  1514. X249,860 250,880 251,900 252,920 253,950
  1515. X254,970 255,990
  1516. X#-This-is-the-Dtime
  1517. X0 0 1 1 1 2 2 3 3 4
  1518. X5 6 6 7 8 9 10 12 13 14
  1519. X15 17 18 20 21 23 25 26 28 30
  1520. X32 34 36 38 40 43 45 47 50 52
  1521. X55 57 60 63 65 68 71 74 77 80
  1522. X83 86 90 93 96 100 103 107 111 114
  1523. X118 122 126 130 134 138 142 146 150 154
  1524. X159 163 168 172 177 181 186 191 196 201
  1525. X206 211 216 221 226 231 236 242 247 253
  1526. X258 264 270 275 281 287 293 299 305 311
  1527. X317 323 330 336 342 349 355 362 369 375
  1528. X382 389 396 403 410 417 424 431 438 446
  1529. X453 460 468 475 483 491 498 506 514 522
  1530. X530 538 546 554 562 571 579 587 596 604
  1531. X613 621 630 639 648 657 665 674 684 693
  1532. X702 711 720 730 739 749 758 768 777 787
  1533. X797 807 817 827 837 847 857 867 877 888 
  1534. X898 908 919 929 940 951 961 972 983 994
  1535. X1000 1010 1020 1030 1050 1060 1070 1080 1090 1100
  1536. X1110 1130 1140 1150 1160 1170 1180 1200 1210 1220
  1537. X1230 1250 1260 1270 1280 1290 1310 1320 1330 1350
  1538. X1360 1370 1380 1400 1410 1420 1440 1450 1460 1480
  1539. X1490 1500 1520 1530 1540 1560 1570 1580 1600 1610
  1540. X1630 1640 1650 1670 1680 1700 1710 1730 1740 1760
  1541. X1770 1780 1800 1810 1830 1840 1860 1870 1890 1900
  1542. X1920 1930 1950 1960 1980 2000
  1543. X#-This-is-the-Predly
  1544. X0 0 0 0 0 0 0 0 0 1
  1545. X1 1 1 1 2 2 2 2 2 3
  1546. X3 3 4 4 4 5 5 6 6 6
  1547. X7 7 8 8 9 9 10 11 11 12
  1548. X12 13 14 14 15 16 16 17 18 18
  1549. X19 20 21 22 22 23 24 25 26 27
  1550. X28 29 30 31 31 32 33 35 36 37
  1551. X38 39 40 41 42 43 44 46 47 48
  1552. X49 50 52 53 54 56 57 58 60 61
  1553. X62 64 65 67 68 69 71 72 74 75
  1554. X77 78 80 82 83 85 86 88 90 91
  1555. X93 95 96 98 100 102 103 105 107 109
  1556. X111 113 114 116 118 120 122 124 126 128
  1557. X130 132 134 136 138 140 142 144 146 149
  1558. X151 153 155 157 159 162 164 166 168 171
  1559. X173 175 178 180 182 185 187 190 192 194
  1560. X197 199 202 204 207 209 212 214 217 220
  1561. X222 225 227 230 233 235 238 241 244 246
  1562. X249 252 255 258 260 263 266 269 272 275
  1563. X278 281 283 286 289 292 295 298 301 305
  1564. X308 311 314 317 320 323 326 329 333 336
  1565. X339 342 346 349 352 355 359 362 365 369
  1566. X372 376 379 382 386 389 393 396 400 403
  1567. X407 410 414 417 421 425 428 432 436 439
  1568. X443 447 450 454 458 462 465 469 473 477
  1569. X481 484 488 492 496 500
  1570. X#-This-is-the-end
  1571. END_OF_FILE
  1572. if test 9806 -ne `wc -c <'glibinit.dp5'`; then
  1573.     echo shar: \"'glibinit.dp5'\" unpacked with wrong size!
  1574. fi
  1575. # end of 'glibinit.dp5'
  1576. fi
  1577. if test -f 'list.c' -a "${1}" != "-c" ; then 
  1578.   echo shar: Will not clobber existing file \"'list.c'\"
  1579. else
  1580. echo shar: Extracting \"'list.c'\" \(8986 characters\)
  1581. sed "s/^X//" >'list.c' <<'END_OF_FILE'
  1582. X/* $Id: list.c,v 1.6 89/05/06 17:13:31 lee Exp $
  1583. X * GLIB - a Generic LIBrarian and editor for synths
  1584. X * Tim Thompson
  1585. X * modified by everyone
  1586. X *
  1587. X * The E array is the list of synths that can be handled.
  1588. X * GLIB is completely driven from the stuff in the editinfo structure.
  1589. X * To add/delete a synth, just add/delete an entry to the E array,
  1590. X * and provide the functions.  The #defines at the top provide a
  1591. X * convenient way of including/excluding synths that are already
  1592. X * supported.
  1593. X * $Log:    list.c,v $
  1594. X * Revision 1.6  89/05/06  17:13:31  lee
  1595. X * rel. to comp.sources.misc
  1596. X * 
  1597. X */
  1598. X
  1599. X#ifdef KAWAIK1
  1600. X#define K1multi
  1601. X#define K1single
  1602. X#define PATDATAID 0xf1
  1603. X#define TONDATAID 0xf3
  1604. X#endif
  1605. X
  1606. X#ifdef ROLANDD10
  1607. X#define D10pat
  1608. X#define D10tim
  1609. X#define D10wfg
  1610. X#define D10tvf
  1611. X#define D10tva
  1612. X#define D10rsu
  1613. X#define D10urp
  1614. X#define D10tra
  1615. X#define PATDATAID 0xf1
  1616. X#define TIMDATAID 0xf2
  1617. X#define TONDATAID 0xf3
  1618. X#define RSUDATAID 0xf4
  1619. X#define URPDATAID 0xf5
  1620. X#define TRADATAID 0xf6
  1621. X#endif
  1622. X
  1623. X#include "glib.h"
  1624. X
  1625. X#ifdef DX100
  1626. Xextern dxtxdin(), dxtxdout(), dx1snof(), dx1sbulk(), dx1gbulk(), dx1sedit();
  1627. Xextern char *dx1nof();
  1628. Xextern struct paraminfo Pdx100[];
  1629. Xextern struct labelinfo Ldx100[];
  1630. X#endif
  1631. X
  1632. X#ifdef TX81Z
  1633. Xextern dxtxdin(), dxtxdout(), dx1snof(), dx1sbulk(), dx1gbulk(), dx1sedit();
  1634. Xextern char *dx1nof();
  1635. Xextern struct paraminfo Ptx81z[];
  1636. Xextern struct labelinfo Ltx81z[];
  1637. X#endif
  1638. X
  1639. X#ifdef TX81ZPERF
  1640. Xextern tx8pdin(), tx8pdout(), tx8psedit(), tx8psbulk(), tx8pgbulk(), tx8psnof();
  1641. Xextern char *tx8pnof();
  1642. Xextern struct paraminfo Ptx81p[];
  1643. Xextern struct labelinfo Ltx81p[];
  1644. X#endif
  1645. X
  1646. X#ifdef DEP5
  1647. Xextern struct paraminfo Pdep5[];
  1648. Xextern struct labelinfo Ldep5[];
  1649. Xextern dep5din(), dep5dout(), dep5snof(), dep5sone(), dep5sedit();
  1650. Xextern char *dep5nof();
  1651. X#endif
  1652. X
  1653. X#ifdef DW8000
  1654. Xextern struct paraminfo Pdw800[];
  1655. Xextern struct labelinfo Ldw800[];
  1656. Xextern dw8din(), dw8dout(), dw8snof(), dw8sone(), dw8gbulk();
  1657. Xextern dw8numv(), dw8sedit();
  1658. Xextern char *dw8nof(), *dw8vnum();
  1659. X#endif
  1660. X
  1661. X#ifdef KAWAIK5
  1662. Xextern struct paraminfo Pk5s[], Pk5m[];
  1663. Xextern struct labelinfo Lk5s[], Lk5m[];
  1664. Xextern k5sdin(), k5sdout(), k5ssnof(), k5ssone();
  1665. Xextern k5mdin(), k5mdout(), k5msnof(), k5msone();
  1666. Xextern k5ssbulk(), k5msbulk();
  1667. Xextern k5numv(), k5ssedit(), k5msedit(), k5sgbulk(), k5mgbulk();
  1668. Xextern char *k5snof(), *k5mnof(), *k5vnum();
  1669. X#endif
  1670. X
  1671. X#ifdef D10pat
  1672. Xextern struct paraminfo Pdpat[];
  1673. Xextern struct labelinfo Ldpat[];
  1674. Xextern dpatdin(), dpatdout(), dpatsnof(), dpatsone(), dpatgbulk();
  1675. Xextern dnumpat(), dpatsedit(), dpatsbulk();
  1676. Xextern char *dpatnof(), *dpatnum();
  1677. X#endif
  1678. X
  1679. X#ifdef D10tim
  1680. Xextern struct paraminfo Pdtim[];
  1681. Xextern struct labelinfo Ldtim[];
  1682. Xextern dtimdin(), dtimdout(), dtimsnof(), dtimsone(), dtimgbulk();
  1683. Xextern dnumtim(), dtimsedit(), dtimsbulk();
  1684. Xextern char *dtimnof(), *dtimnum();
  1685. X#endif
  1686. X
  1687. X#ifdef D10wfg
  1688. Xextern struct paraminfo Pdwfg[];
  1689. Xextern struct labelinfo Ldwfg[];
  1690. Xextern dwfgdin(), dwfgdout(), dtonsnof(), dtonsone(), dtongbulk();
  1691. Xextern dnumton(), dtonsedit(), dtonsbulk();
  1692. Xextern char *dtonnof(), *dtonnum();
  1693. X#endif
  1694. X
  1695. X#ifdef D10tvf
  1696. Xextern struct paraminfo Pdtvf[];
  1697. Xextern struct labelinfo Ldtvf[];
  1698. Xextern dtvfdin(), dtvfdout(), dtonsnof(), dtonsone(), dtongbulk();
  1699. Xextern dnumton(), dtonsedit(), dtonsbulk();
  1700. Xextern char *dtonnof(), *dtonnum();
  1701. X#endif
  1702. X
  1703. X#ifdef D10tva
  1704. Xextern struct paraminfo Pdtva[];
  1705. Xextern struct labelinfo Ldtva[];
  1706. Xextern dtvadin(), dtvadout(), dtonsnof(), dtonsone(), dtongbulk();
  1707. Xextern dnumton(), dtonsedit(), dtonsbulk();
  1708. Xextern char *dtonnof(), *dtonnum();
  1709. X#endif
  1710. X
  1711. X#ifdef D10rsu
  1712. Xextern struct paraminfo Pdrsu[];
  1713. Xextern struct labelinfo Ldrsu[];
  1714. Xextern drsudin(), drsudout(), drsusnof(), drsusone(), drsugbulk();
  1715. Xextern dnumrsu(), drsusedit(), drsusbulk();
  1716. Xextern char *drsunof(), *drsunum();
  1717. X#endif
  1718. X
  1719. X#ifdef D10urp
  1720. Xextern struct paraminfo Pdurp[];
  1721. Xextern struct labelinfo Ldurp[];
  1722. Xextern durpdin(), durpdout(), durpsnof(), durpsone(), durpgbulk();
  1723. Xextern dnumurp(), durpsedit(), durpsbulk();
  1724. Xextern char *durpnof(), *durpnum();
  1725. X#endif
  1726. X
  1727. X#ifdef D10tra
  1728. Xextern struct paraminfo Pdtra[];
  1729. Xextern struct labelinfo Ldtra[];
  1730. Xextern dtradin(), dtradout(), dtrasnof(), dtrasone(), dtragbulk();
  1731. Xextern dnumtra(), dtrasedit(), dtrasbulk();
  1732. Xextern char *dtranof(), *dtranum();
  1733. X#endif
  1734. X
  1735. X#ifdef K1multi
  1736. Xextern struct paraminfo Pk1m[];
  1737. Xextern struct labelinfo Lk1m[];
  1738. Xextern k1mdin(), k1mdout(), k1msnof(), k1msone(), k1mgbulk();
  1739. Xextern k1nummlt(), k1msedit(), k1msbulk();
  1740. Xextern char *k1mnof(), *k1mnum();
  1741. X#endif
  1742. X
  1743. X#ifdef K1single
  1744. Xextern struct paraminfo Pk1sng[];
  1745. Xextern struct labelinfo Lk1sng[];
  1746. Xextern k1sdin(), k1sdout();
  1747. X#ifndef K1multi
  1748. Xextern k1msnof(), k1msone(), k1mgbulk();
  1749. Xextern k1nummlt(), k1msedit(), k1msbulk();
  1750. Xextern char *k1mnof(), *k1mnum();
  1751. X#endif
  1752. X#endif
  1753. X
  1754. X#ifdef DX7
  1755. Xextern struct paraminfo Pdx7[];
  1756. Xextern struct labelinfo Ldx7[];
  1757. Xextern dx7din(), dx7dout(), dx7snof(), dx7sedit(), dx7sbulk(), dx7gbulk();
  1758. Xextern char *dx7nof();
  1759. X#endif
  1760. X
  1761. X#ifdef DX7S
  1762. Xextern struct paraminfo Pdx7S[];
  1763. Xextern struct labelinfo Ldx7S[];
  1764. Xextern dx7Sdin(), dx7Sdout(), dx7snof(), dx7Ssedit(), dx7Ssbulk(), dx7Sgbulk();
  1765. Xextern char *dx7nof();
  1766. X
  1767. X/* if the DX7s dataID is changed, it must be changed in readall() as well. */
  1768. X
  1769. X#define DX7S_DATAID 0xd7
  1770. X#endif
  1771. X
  1772. X#ifdef CZ1
  1773. Xextern cz1din(), cz1dout(), cz1snof(), cz1sbulk(), cz1gbulk(),
  1774. X       cz1sedit(), cz1sone();
  1775. Xextern char *cz1nof();
  1776. Xextern struct paraminfo Pcz1[];
  1777. Xextern struct labelinfo Lcz1[];
  1778. X#endif
  1779. X
  1780. X
  1781. Xstruct editinfo E[] = {
  1782. X
  1783. X#ifdef DX100
  1784. X   {"DX-100", Pdx100, Ldx100, 24, 128, 17, 0xdd,
  1785. X    dxtxdin, dxtxdout, dx1sedit, NULL, dx1sbulk, dx1gbulk, dx1nof, dx1snof,
  1786. X    NULL, NULL, NULL},
  1787. X#endif
  1788. X#ifdef DEP5
  1789. X   {"DEP-5", Pdep5, Ldep5, 99, 42, 16, 0xdd,
  1790. X    dep5din, dep5dout, dep5sedit, dep5sone, NULL, NULL, dep5nof, dep5snof,
  1791. X    NULL, NULL, NULL},
  1792. X#endif
  1793. X#ifdef TX81Z
  1794. X   {"TX81Z", Ptx81z, Ltx81z, 32, 128, 17, 0xdd,
  1795. X    dxtxdin, dxtxdout, dx1sedit, NULL, dx1sbulk, dx1gbulk, dx1nof, dx1snof,
  1796. X    NULL, NULL, NULL},
  1797. X#endif
  1798. X#ifdef TX81ZPERF
  1799. X   {"TX81Z Performance", Ptx81p, Ltx81p, 24, 76, 17, 0xdd,
  1800. X    tx8pdin, tx8pdout, tx8psedit, NULL, tx8psbulk, tx8pgbulk, tx8pnof,
  1801. X    tx8psnof, NULL, NULL, NULL},
  1802. X#endif
  1803. X#ifdef DW8000
  1804. X   {"DW8000", Pdw800, Ldw800, 64, 72, 17, 0xdd,
  1805. X    dw8din, dw8dout, dw8sedit, dw8sone, NULL, dw8gbulk, dw8nof, dw8snof,
  1806. X    dw8vnum, dw8numv, NULL},
  1807. X#endif
  1808. X#ifdef KAWAIK5
  1809. X   {"K-5 Single", Pk5s, Lk5s, 48, 984, 8, 0xdd,
  1810. X    k5sdin, k5sdout, k5ssedit, k5ssone, k5ssbulk, k5sgbulk,
  1811. X    k5snof, k5ssnof, k5vnum, NULL, k5numv},
  1812. X   {"K-5 Multi", Pk5m, Lk5m, 48, 352, 8, 0xdd,
  1813. X    k5mdin, k5mdout, k5msedit, k5msone, k5msbulk, k5mgbulk,
  1814. X    k5mnof, k5msnof, k5vnum, NULL, k5numv},
  1815. X#endif
  1816. X#ifdef D10pat
  1817. X   {"Patches ", Pdpat, Ldpat, 128, 58, 16, PATDATAID,
  1818. X    dpatdin, dpatdout, dpatsedit, dpatsone, dpatsbulk,
  1819. X    dpatgbulk, dpatnof, dpatsnof, dpatnum, dnumpat, NULL},
  1820. X#endif
  1821. X
  1822. X#ifdef D10tim
  1823. X   {"Timbres ", Pdtim, Ldtim, 128, 28, 1, TIMDATAID,
  1824. X    dtimdin, dtimdout, dtimsedit, dtimsone, dtimsbulk,
  1825. X    dtimgbulk, dtimnof, dtimsnof, dtimnum, dnumtim, NULL},
  1826. X#endif
  1827. X
  1828. X#ifdef D10wfg
  1829. X   {"Tone WFG's", Pdwfg, Ldwfg, 64, 266, 10, TONDATAID,
  1830. X    dwfgdin, dwfgdout, dtonsedit, dtonsone, dtonsbulk,
  1831. X    dtongbulk, dtonnof, dtonsnof, dtonnum, dnumton, NULL},
  1832. X#endif
  1833. X
  1834. X#ifdef D10tvf
  1835. X   {"Tone TVF's", Pdtvf, Ldtvf, 64, 266, 10, TONDATAID,
  1836. X    dtvfdin, dtvfdout, dtonsedit, dtonsone, dtonsbulk,
  1837. X    dtongbulk, dtonnof, dtonsnof, dtonnum, dnumton, NULL},
  1838. X#endif
  1839. X
  1840. X#ifdef D10tva
  1841. X   {"Tone TVA's ", Pdtva, Ldtva, 64, 266, 10, TONDATAID,
  1842. X    dtvadin, dtvadout, dtonsedit, dtonsone, dtonsbulk,
  1843. X    dtongbulk, dtonnof, dtonsnof, dtonnum, dnumton, NULL},
  1844. X#endif
  1845. X
  1846. X#ifdef D10rsu
  1847. X   {"Rhythm Setup ", Pdrsu, Ldrsu, 85, 24, 1, RSUDATAID,
  1848. X    drsudin, drsudout, drsusedit, drsusone, drsusbulk,
  1849. X    drsugbulk, drsunof, drsusnof, drsunum, dnumrsu, NULL},
  1850. X#endif
  1851. X
  1852. X#ifdef D10urp
  1853. X   {"Rhythm Patterns ", Pdurp, Ldurp, 32, 608, 1, URPDATAID,
  1854. X    durpdin, durpdout, durpsedit, durpsone, durpsbulk,
  1855. X    durpgbulk, durpnof, durpsnof, durpnum, dnumurp, NULL},
  1856. X#endif
  1857. X
  1858. X#ifdef D10tra
  1859. X   {"Rhythm Track ", Pdtra, Ldtra, 1, 522, 1, TRADATAID,
  1860. X    dtradin, dtradout, dtrasedit, dtrasone, dtrasbulk,
  1861. X    dtragbulk, dtranof, dtrasnof, dtranum, dnumtra, NULL},
  1862. X#endif
  1863. X
  1864. X#ifdef K1multi
  1865. X   {"Multi Patches", Pk1m, Lk1m, 32, 75, 10, PATDATAID,
  1866. X    k1mdin, k1mdout, k1msedit, k1msone, k1msbulk,
  1867. X    k1mgbulk, k1mnof, k1msnof, k1mnum, NULL, k1nummlt},
  1868. X#endif
  1869. X
  1870. X#ifdef K1single
  1871. X   {"Single Patches", Pk1sng, Lk1sng, 64, 87, 10, TONDATAID,
  1872. X    k1sdin, k1sdout, k1msedit, k1msone, k1msbulk,
  1873. X    k1mgbulk, k1mnof, k1msnof, k1mnum, NULL, k1nummlt},
  1874. X#endif
  1875. X
  1876. X#ifdef DX7
  1877. X   {"DX7", Pdx7, Ldx7, 32, 128, 10, 0,
  1878. X    dx7din, dx7dout, dx7sedit, NULL, dx7sbulk, dx7gbulk, dx7nof, dx7snof,
  1879. X    NULL, NULL, NULL},
  1880. X#endif
  1881. X#ifdef DX7S
  1882. X   {"DX7s", Pdx7S, Ldx7S, 32, 163, 10, DX7S_DATAID,
  1883. X    dx7Sdin, dx7Sdout, dx7Ssedit, NULL, dx7Ssbulk, dx7Sgbulk, dx7nof,
  1884. X        dx7snof,
  1885. X    NULL, NULL, NULL},
  1886. X#endif
  1887. X
  1888. X#ifdef CZ1
  1889. X   {"CZ1", Pcz1, Lcz1, 64, 144, 16, 0xdd,
  1890. X    cz1din, cz1dout, cz1sedit, cz1sone, NULL, cz1gbulk, cz1nof, cz1snof,
  1891. X /* cz1sbulk() is defined, but we use cz1sone(). */
  1892. X    NULL, NULL, NULL},
  1893. X#endif
  1894. X
  1895. X
  1896. X   {NULL,NULL,NULL,0,0,0,0,
  1897. X    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}
  1898. X};
  1899. END_OF_FILE
  1900. if test 8986 -ne `wc -c <'list.c'`; then
  1901.     echo shar: \"'list.c'\" unpacked with wrong size!
  1902. fi
  1903. # end of 'list.c'
  1904. fi
  1905. echo shar: End of archive 4 \(of 15\).
  1906. cp /dev/null ark4isdone
  1907. MISSING=""
  1908. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
  1909.     if test ! -f ark${I}isdone ; then
  1910.     MISSING="${MISSING} ${I}"
  1911.     fi
  1912. done
  1913. if test "${MISSING}" = "" ; then
  1914.     echo You have unpacked all 15 archives.
  1915.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1916. else
  1917.     echo You still need to unpack the following archives:
  1918.     echo "        " ${MISSING}
  1919. fi
  1920. ##  End of shell archive.
  1921. exit 0
  1922.  
  1923.